package no52;

/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 * @date 2023/5/16 16:18
 * 两个链表的第一个公共节点
 * https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/
 */
public class Solution {

    static class ListNode {
        int val;
        ListNode next;
        ListNode(int x) {
            val = x;
            next = null;
        }
    }

    // 返回两个链表中的第一个公共节点
    ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        // 边界处理
        if (headA == null || headB == null) {
            return null;
        }
        // 定义两个辅助指针
        ListNode curA = headA;
        ListNode curB = headB;
        // 对齐并寻找相交节点
        while (curA != curB) {
            curA = curA == null ? headB : curA.next;
            curB = curB == null ? headA : curB.next;
        }
        return curA; // 返回结果
    }
}
